%using Babel;
%using Babel.Parser;
%using Babel.ParserGenerator;
%using StateMachine.Runtime.Compiler.Parser;
%namespace StateMachine.Runtime.Compiler.Lexer

%{

	internal void LoadTokenInfo()
	{
		yylval.Value = yytext;
		yylloc = new LexLocation( tokLin, tokCol, tokLin, tokCol + tokLen );
	}

%}

%%

[a-zA-Z0-9_]*      { return (int)Tokens.IDENTIFIER; }
\=                 { return (int)Tokens.EQUAL; }
\,                 { return (int)Tokens.COMMA; }
\(                 { return (int)Tokens.OPEN_PAREN; }
\)                 { return (int)Tokens.CLOSE_PAREN; }
\{                 { return (int)Tokens.OPEN_SET; }
\}                 { return (int)Tokens.CLOSE_SET; }
\"                 { return (int)Tokens.QUOTE; }
[a-z]              { return (int)Tokens.SYMBOL; }


%{
		this.LoadTokenInfo();
%}

%%

/* ... */